﻿Imports System.Data.SqlClient
Public Class Conexion
    ''creamos el objeto de conexion
    Public conexion As SqlClient.SqlConnection
    ''metodo para conectanos a la base de datos
    Public Sub conectar()
        conexion = New SqlClient.SqlConnection() ''inicializamos el objeto conexion
        ''ahora pasamos la cadena de conexion al objeto conexion con nuestros datos
        conexion.ConnectionString = "Server=localhost; database=sisventas; Integrated Security = true;"
        conexion.Open() ''con la funcion open abrimos la conexion
    End Sub

    ''funcion para enviar transacciones sql a la base de datos
    Public Function consulta(ByVal cadenaSql As String) As Boolean
        Dim comandoSql As SqlClient.SqlCommand ''declaramos el comando para la consulta
        Dim resultado As Integer ''variable para almacenar el resultado de la transaccion
        Try
            ''inicializamos el comando sql pasando la cadena que recibimos del formulario y la conexion a la base
            comandoSql = New SqlClient.SqlCommand(cadenaSql, conexion)
            resultado = comandoSql.ExecuteNonQuery ''almacenamos el resultado del comando sql

            ''en caso que resultado sea mayor a cero la funcion devolvera true
            If resultado > 0 Then
                Return True
            Else
                Return False ''en caso que resultado sea menor o igual a cero devolvera falso
            End If

            conexion.Close() ''cerramos la conexion
            ''en caso de error lanza mensaje de error y la funcion devolvera falso
        Catch ex As Exception
            MsgBox("Error ald ejecutar sentencia en: " + ex.Message)
            Return False
        End Try
    End Function


    ' funcion para producto

    Public Function AutoCompletarProducto(ByVal Control As TextBox) As AutoCompleteStringCollection
        Dim Coleccion As New AutoCompleteStringCollection

        Dim Comando As String

        Comando = "SELECT NOMBRE + ' cod:'+cast(IDPRODUCTO as varchar)FROM PRODUCTO"
        'Creamos una nueva cadena de coneccion

        Using Coneccion As New SqlConnection("Server=localhost;database=sisventas;Integrated Security = true;")
            Dim Ejecutar As New SqlClient.SqlCommand(Comando, Coneccion)
            'Abrimos la coneccion
            Coneccion.Open()
            Dim Lector As SqlDataReader = Ejecutar.ExecuteReader()
            ' Realizamos un Loop mientras se est‚ leyendo.
            While Lector.Read()
                Coleccion.AddRange(New String() {Lector(0)})
            End While
            'Cerramos el SqlReader
            Lector.Close()
            'Cerramos la coneccion
            Coneccion.Close()
        End Using
        'Ajustamos el control TextBox o ComboBox para recibir los datos de la siguiente manera.
        With Control
            .AutoCompleteMode = AutoCompleteMode.Suggest
            .AutoCompleteSource = AutoCompleteSource.CustomSource
            .AutoCompleteCustomSource = Coleccion
        End With
        'Devolvemos los datos recuperados de la base de datos
        Return Coleccion
    End Function




    ' funcion para llenar promocion

    Public Function LlenarListaPromocion(ByVal Control As ListView) As LinkedList(Of Promocion)
        '  Dim Coleccion As New AutoCompleteStringCollection
        Dim listaPromociones As New LinkedList(Of Promocion)
        Dim Comando As String

        Comando = "SELECT IDPROMOCION,PRECIOVENTA,PRECIOPROMOCION,DESCRIPCION FROM PROMOCION"
        'Creamos una nueva cadena de coneccion

        Using Coneccion As New SqlConnection("Server=localhost;database=sisventas;Integrated Security = true;")
            Dim Ejecutar As New SqlClient.SqlCommand(Comando, Coneccion)
            'Abrimos la coneccion
            Coneccion.Open()
            Dim Lector As SqlDataReader = Ejecutar.ExecuteReader()
            ' Realizamos un Loop mientras se est‚ leyendo.
            While Lector.Read()
                'Coleccion.AddRange(New String() {Lector(0)})
                Dim myPromocion As New Promocion
                myPromocion.Codigo = Lector(0)
                myPromocion.PrecioV = Lector(1)
                myPromocion.Precio = Lector(2)
                myPromocion.Descipcion = Lector(3)
                listaPromociones.AddFirst(myPromocion)

            End While
            'Cerramos el SqlReader
            Lector.Close()
            'Cerramos la coneccion
            Coneccion.Close()
        End Using
        'Ajustamos el control TextBox o ComboBox para recibir los datos de la siguiente manera.
        'With Control
        '    .AutoCompleteMode = AutoCompleteMode.Suggest
        '    .AutoCompleteSource = AutoCompleteSource.CustomSource
        '    .AutoCompleteCustomSource = Coleccion
        'End With

        For Each mypromociones As Promocion In listaPromociones
            Dim item As ListViewItem
            item = Control.Items.Add(New ListViewItem(mypromociones.Codigo, 0))
            item.SubItems.Add(mypromociones.Precio)
            item.SubItems.Add(mypromociones.PrecioV)
            item.SubItems.Add(mypromociones.Descipcion)
        Next

        'Devolvemos los datos recuperados de la base de datos
        Return listaPromociones
    End Function
End Class
